package com.yuw.dz.tools;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class TestDriver02 {
    public static void main(String[] args) {
        test01();
        System.out.println("===================================");
        test02();
        System.out.println("===================================");
        test03();
    }

    /**
     * 异常的分类/异常throws处理机制
     */
    public static void test03() {
        // 调用抛出异常的子方法
        try {
            test03_sub();
        } catch (FileNotFoundException | NullPointerException e) {
            // 异常处理
            System.out.println("发生异常：" + e.getMessage());
        }
    }

    /**
     * 异常的分类/异常throws处理机制
     */
    public static void test03_sub() throws FileNotFoundException {
        // 检查性异常
        int i = 0;
        if (i == 0) {
            // 手动抛出一个异常
            throw new NullPointerException("这是手动抛出的异常");
        }
    }

    /**
     * 异常的分类/异常throws处理机制
     */
    public static void test02() {
        // 调用抛出异常的子方法
        try {
            test02_sub();
        } catch (FileNotFoundException e) {
            // 异常处理
            System.out.println("读取文件发生异常：" + e.getMessage());
        }
    }

    /**
     * 异常的分类/异常throws处理机制
     */
    public static void test02_sub() throws FileNotFoundException {
        // 检查性异常
        FileInputStream fis = new FileInputStream("");
    }

    /**
     * 异常的分类/异常try-catch处理机制
     */
    public static void test01() {
        // 非检查性异常
        // int i = 10/0;

        // 检查性的异常
        try {
            //FileInputStream fis = new FileInputStream("D:\\temp\\result.txt");
            FileInputStream fis = new FileInputStream("");
        } catch (FileNotFoundException e) {
            // 异常处理
            System.out.println("读取文件发生异常1：" + e.getMessage());
        } catch (Exception e) {
            // 异常处理
            System.out.println("读取文件发生异常2：" + e.getMessage());
        } finally {
            System.out.println("无论是否发生异常，finally都会被执行");

        }

        // 检查性的异常
        try {
            //FileInputStream fis = new FileInputStream("D:\\temp\\result.txt");
            FileInputStream fis = new FileInputStream("");
        } catch (FileNotFoundException | NullPointerException e) {  // 变形的写法
            // 异常处理
            System.out.println("读取文件发生异常1：" + e.getMessage());
        } finally {
            System.out.println("无论是否发生异常，finally都会被执行");
        }

        // 检查性的异常[了解内容：作用自动关闭，要求这个类实现Closeable接口]
        try (FileInputStream fis = new FileInputStream("");) {
            //FileInputStream fis = new FileInputStream("D:\\temp\\result.txt");

        } catch (FileNotFoundException e) {
            // 异常处理
            System.out.println("读取文件发生异常1：" + e.getMessage());
        } catch (Exception e) {
            // 异常处理
            System.out.println("读取文件发生异常2：" + e.getMessage());
        } finally {
            System.out.println("无论是否发生异常，finally都会被执行");
        }
    }
}
